--[[
	@module 字符串工具类
]]

--判断@body是否为空串
local function is_blank(body)
	return not body or body == nil or body == ngx.null or #body < 1
end

--判断@body是否不为空串
local function is_not_blank(body)
	return not is_blank(body)
end

--判断@str是否以@pre开头
local function starts_with(str, pre)
	if str == nil or pre == nil then
		return false;
	end
	return string.find(str, pre) == 1;
end

--[[
	字符串拆分
	@s 源字符串
	@delim 拆分标识符
]]
local function split(s, delim)
	if type(delim) ~= "string" or string.len(delim) <= 0 then
		return
	end

	local start = 1
	local t = {}
	while true do
		local pos = string.find(s, delim, start, true)
		if not pos then
			break
		end
		table.insert (t, string.sub(s, start, pos - 1))
		start = pos + string.len(delim)
	end
	table.insert(t, string.sub(s, start))
	return t
end

--[[
	随机生成长度为length的字符串
]]
local function rand(length)
	local strs = {
		"A", "H", "O", "U", "a", "g", "m", "s", "y","4",
		"B", "I", "P", "V", "b", "h", "n", "t", "z","5",
		"C", "J", "Q", "W", "c", "i", "o", "u", "0","6",
		"D", "K", "R", "X", "d", "j", "p", "v", "1","7",
		"E", "L", "S", "Y", "e", "k", "q", "w", "2","8",
		"F", "M", "T", "Z", "f", "l", "r", "x", "3","9",
		"G", "N"
	};
	
	local r = '';
	math.randomseed(os.time() + os.clock() * 100000000);
	for i = 1, length, 1 do
		r = r .. strs[math.random(1, #strs)];
	end
	return r;
end

--[[
	判断字符串str与正则表达式reg是否匹配
]]
local function match_regx(str, reg)
	assert(str, "str不能为nil")
	assert(reg, "reg不能为nil")
	local r = { string.match(str, reg) };
	if #r < 1 or r == nil then
		return nil
	end
	return r;
end

local _M = {  
   is_blank = is_blank,
   is_not_blank = is_not_blank,
   starts_with = starts_with,
   split = split,
   rand = rand,
   match_regx = match_regx,
}

return _M;


